home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.4)
-
- '''Conversion functions between RGB and other color systems.
-
- This modules provides two functions for each color system ABC:
-
- rgb_to_abc(r, g, b) --> a, b, c
- abc_to_rgb(a, b, c) --> r, g, b
-
- All inputs and outputs are triples of floats in the range [0.0...1.0].
- Inputs outside this range may cause exceptions or invalid outputs.
-
- Supported color systems:
- RGB: Red, Green, Blue components
- YIQ: used by composite video signals
- HLS: Hue, Luminance, Saturation
- HSV: Hue, Saturation, Value
- '''
- __all__ = [
- 'rgb_to_yiq',
- 'yiq_to_rgb',
- 'rgb_to_hls',
- 'hls_to_rgb',
- 'rgb_to_hsv',
- 'hsv_to_rgb']
- ONE_THIRD = 1.0 / 3.0
- ONE_SIXTH = 1.0 / 6.0
- TWO_THIRD = 2.0 / 3.0
-
- def rgb_to_yiq(r, g, b):
- y = 0.29999999999999999 * r + 0.58999999999999997 * g + 0.11 * b
- i = 0.59999999999999998 * r - 0.28000000000000003 * g - 0.32000000000000001 * b
- q = (0.20999999999999999 * r - 0.52000000000000002 * g) + 0.31 * b
- return (y, i, q)
-
-
- def yiq_to_rgb(y, i, q):
- r = y + 0.94826200000000005 * i + 0.62401300000000004 * q
- g = y - 0.27606599999999998 * i - 0.63980999999999999 * q
- b = (y - 1.10545 * i) + 1.72986 * q
- if r < 0.0:
- r = 0.0
-
- if g < 0.0:
- g = 0.0
-
- if b < 0.0:
- b = 0.0
-
- if r > 1.0:
- r = 1.0
-
- if g > 1.0:
- g = 1.0
-
- if b > 1.0:
- b = 1.0
-
- return (r, g, b)
-
-
- def rgb_to_hls(r, g, b):
- maxc = max(r, g, b)
- minc = min(r, g, b)
- l = (minc + maxc) / 2.0
- if minc == maxc:
- return (0.0, l, 0.0)
-
- if l <= 0.5:
- s = (maxc - minc) / (maxc + minc)
- else:
- s = (maxc - minc) / (2.0 - maxc - minc)
- rc = (maxc - r) / (maxc - minc)
- gc = (maxc - g) / (maxc - minc)
- bc = (maxc - b) / (maxc - minc)
- if r == maxc:
- h = bc - gc
- elif g == maxc:
- h = 2.0 + rc - bc
- else:
- h = 4.0 + gc - rc
- h = h / 6.0 % 1.0
- return (h, l, s)
-
-
- def hls_to_rgb(h, l, s):
- if s == 0.0:
- return (l, l, l)
-
- if l <= 0.5:
- m2 = l * (1.0 + s)
- else:
- m2 = l + s - l * s
- m1 = 2.0 * l - m2
- return (_v(m1, m2, h + ONE_THIRD), _v(m1, m2, h), _v(m1, m2, h - ONE_THIRD))
-
-
- def _v(m1, m2, hue):
- hue = hue % 1.0
- if hue < ONE_SIXTH:
- return m1 + (m2 - m1) * hue * 6.0
-
- if hue < 0.5:
- return m2
-
- if hue < TWO_THIRD:
- return m1 + (m2 - m1) * (TWO_THIRD - hue) * 6.0
-
- return m1
-
-
- def rgb_to_hsv(r, g, b):
- maxc = max(r, g, b)
- minc = min(r, g, b)
- v = maxc
- if minc == maxc:
- return (0.0, 0.0, v)
-
- s = (maxc - minc) / maxc
- rc = (maxc - r) / (maxc - minc)
- gc = (maxc - g) / (maxc - minc)
- bc = (maxc - b) / (maxc - minc)
- if r == maxc:
- h = bc - gc
- elif g == maxc:
- h = 2.0 + rc - bc
- else:
- h = 4.0 + gc - rc
- h = h / 6.0 % 1.0
- return (h, s, v)
-
-
- def hsv_to_rgb(h, s, v):
- if s == 0.0:
- return (v, v, v)
-
- i = int(h * 6.0)
- f = h * 6.0 - i
- p = v * (1.0 - s)
- q = v * (1.0 - s * f)
- t = v * (1.0 - s * (1.0 - f))
- if i % 6 == 0:
- return (v, t, p)
-
- if i == 1:
- return (q, v, p)
-
- if i == 2:
- return (p, v, t)
-
- if i == 3:
- return (p, q, v)
-
- if i == 4:
- return (t, p, v)
-
- if i == 5:
- return (v, p, q)
-
-
-